home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
SOUND
/
AUDIOVIS
/
!AudioVis
/
!RunImage
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1997-05-10
|
12KB
|
509 lines
"AudioVis by Michael K
bel & Denys Bogatz"
"Wimp Interface written by Dirk Krumbholz"
$+" ("+
_InitVars
_EnterWimp
_LeaveWimp:
$+" ("+
_InitApp
"WimpExt_PrePoll"
"Wimp_Poll",%11100000110001,block%
reason%
"WimpExt_Action",taskhandle%,block%,reason%
reason%
reason%
"Wimp_OpenWindow",,block%
"Wimp_CloseWindow",,block%
_MouseClick(block%!12)
"Wimp_ProcessKey",block%!24
_MenuSelection(!block%)
17,18:
_RecieveMessage(block%!16)
quit%
_LeaveWimp
_MouseClick(window%)
window%
-2 :
_IconBarClick(block%!8)
_WindowClick(block%!12,block%!16)
_IconBarClick(button%)
button%
2 :
"WimpExt_CreateMenu",,imenu%,!block%-64,228
menuopen%=imenu%
4 :
_StartVisualisation
_WindowClick(window%,icon%)
window%<>optwin%
icon%
4 :
_Opt_Initialise
_Opt_UpdateAll
3: !block%=optwin%:
"Wimp_CloseWindow",,block%
5 :
_Opt_GetValues
_Opt_Save
6: !block%=optwin%:
"Wimp_CloseWindow",,block%
6 : !block%=optwin%:
"Wimp_CloseWindow",,block%
7 :
_Opt_GetValues
9: !block%=optwin%:
"Wimp_CloseWindow",,block%
_MenuSelection(menuItem%)
menuItem%
1 : !block%=optwin%
@-
"Wimp_GetWindowState",,block%
A0
"WimpExt_CentreWindow",,block%+4
B1
"WimpExt_CentreWindowV",,block%+4
block%!28=-1
D)
"Wimp_OpenWindow",,block%
2 : quit%=
_RecieveMessage(action%)
action%
0 : quit%=
3 :
block%!20 = optwin%
M
block%!24 = 17
P%=block%+44
O'
?P%<>0:P%+=1:
:?P%=13
P* OPTsprsetname$=$(block%+44)
Q%
_Opt_UpdateSprSetName
_Opt_Initialise
OPTplotchoice%=1
OPTviewchoice%=0
OPTbuffercolor%=159
OPTsprset%=1
OPTsprsetname$=""
_Opt_Save
P%=block%:L%=P%+2048
[ OPT 10
equd OPTplotchoice%
equd OPTviewchoice%
equd OPTbuffercolor%
equd OPTsprset%
equs OPTsprsetname$
equb 13
"OS_File",10,"<AudioVis$Dir>.Choices",&ffd,,block%,block%+16+1+
(OPTsprsetname$)
_Opt_Load
"OS_Find",%01000111,"<AudioVis$Dir>.Choices"
F%=0
_Opt_Initialise
"OS_Find",0,F%
"OS_File",16,"<AudioVis$Dir>.Choices",block%,0
OPTplotchoice%=!block%
OPTviewchoice%=block%!4
OPTbuffercolor%=block%!8
OPTsprset%=block%!12
w OPTsprsetname$=$(block%+16)
_Opt_UpdateAll
"WimpExt_SetIcon",,,optwin%,20,OPTplotchoice%
"WimpExt_SetIcon",,,optwin%,21+OPTviewchoice%,1
"WimpExt_SetIconString",,,optwin%,23,
OPTbuffercolor%
"WimpExt_SetIcon",,,optwin%,9+OPTsprset%,1
"WimpExt_SetIconString",,,optwin%,17,OPTsprsetname$
_Opt_UpdateSprSetName
"WimpExt_SetIcon",,,optwin%,16,1
"WimpExt_SetIconString",,,optwin%,17,OPTsprsetname$
_Opt_GetValues
"WimpExt_GetIcon",,,optwin%,20
OPTplotchoice%
"WimpExt_GetIcon",,,optwin%,22
OPTviewchoice%
"WimpExt_GetNumberIcon",10,,optwin%,23
OPTbuffercolor%
'OPTbuffercolor%=OPTbuffercolor%
"Wimp_WhichIcon",optwin%,block%,&003f0000,&00210000
OPTsprset%=!block%-9
_InitVars
code% (600*1024)
block% 2048
idata% 2048
imenu% 100
quit%=
optspritearea% 50175
-!optspritearea%=50172:optspritearea%!8=16
"OS_SpriteOp",&109,optspritearea%
"OS_SpriteOp",&10a,optspritearea%,"<AudioVis$Dir>.Sprites"
_InitApp
_Opt_Load
_Opt_UpdateAll
_EnterWimp
P%=block%:L%=P%+8
[ OPT 10
equd 3:equd 0
"Wimp_Initialise",300,&4b534154,"AudioVis",block%
,taskhandle%
"WimpExt_Initialise",14,taskhandle%,%1100010010
"WimpExt_IconBarSprite",,,-1,"!audiovis",,3
block%!0=0:block%!4=0
"WimpExt_LoadTemplates",block%,block%+64,idata%,idata%+2047,-1,"<AudioVis$Dir>.Templates",optspritearea%
%infowin%=!block%:optwin%=block%!4
P%=imenu%:L%=P%+100
[ OPT 10
@equs "AudioVis":equd 0:equd &00070207:equd 96:equd 44:equd 0
@equd 0:equd infowin%:equd &7000021:equs "Info":equd 0:equd 0
7equd 0:equd -1:equd &7000021:equs "Options
":equd 0
<equd &80:equd -1:equd &7000021:equs "Quit":equd 0:equd 0
_LeaveWimp
"WimpExt_CloseDown",taskhandle%
"Wimp_CloseDown"
_StartVisualisation
BufferColor=OPTbuffercolor%
PlotChoice=1-OPTplotchoice%
ViewChoice=OPTviewchoice%
OPTsprset%=7
L$=OPTsprsetname$
7 L$="<AudioVis$Dir>.SpriteSets.sprset"+
OPTsprset%
"Wimp_ReadSysInfo",1
DesktopScreenMode%
L%=code%+(600*1024)-1
assemble
"LZWD_Decompress",L$,SPRITES
4 table%?(S*2)=
((0.5+267.33*2^(S/16))/512)
! table%?(S*2+1)=-table%?(S*2)
code%
DesktopScreenMode%
"Wimp_ForceRedraw",-1,0,0,&7fff,&7fff
assemble
pass% = 8
P%=code%
OPT pass%
STMFD R13!,{R0-R12,R14}
BL GSCREEN
BL SSCAN
b main_loop
;------------------------
.table%
_work(256):ALIGN
.OSTSET:EQUD 320*256
EQUW 0:EQUB 0
.SBASE
EQUB 2
EQUD 0
ALIGN
;------------------------
.main_loop
MOV R0,#19:SWI 6
!MOV R0,#22:ADR R1,SBASE:SWI 7
LDR R3,OSTSET
LDR R2,SBASE+1
R2,R2,R3
STR R2,SBASE+1
STR R2,SCREEN+4
BL LOESCHBILD
MOV R4,#0
LDR R1,BASIS
LDR R2,SBLOCK
ADR R12,table%
MOV R6,#0
MOV R7,#0
MOV R8,#0
MOV R9,#0
.werte_lesen
LDR R10,[R1]
R3,R10,#&FF
LDRB R3,[R12,R3]
SUBS R3,R3,#128
RSBMI R3,R3,#0
CMP R3,R6
MOVGT R6,R3
R3,R10,#&FF00
LDRB R3,[R12,R3,LSR#8]
SUBS R3,R3,#128
RSBMI R3,R3,#0
CMP R3,R7
MOVGT R7,R3
R3,R10,#&FF0000
LDRB R3,[R12,R3,LSR#16]
SUBS R3,R3,#128
RSBMI R3,R3,#0
CMP R3,R8
MOVGT R8,R3
MOV R3,R10,lsr#24
LDRB R3,[R12,R3]
SUBS R3,R3,#128
RSBMI R3,R3,#0
CMP R3,R9
MOVGT R9,R3
ADD R4,R4,#1
CMP R4,#128
BNE werte_lesen
STR R6,wert_erste
STR R7,wert_zweite
STR R8,wert_dritte
STR R9,wert_vierte
LDR R0,SCREEN
LDR R1,SCREEN+4
ADD r0,r1,r0
ADD R0,R0,#32
ADR R1,SPRITES
LDR R3,wert_erste
MOV R3,R3,lSR#2
ADD R1,R1,R3,lSL#14
MOV R2,#128
.plotloop1
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12}
STMIA R0!,{R3-R12}
ADD R0,R0,#192
SUBS R2,R2,#1
BGT plotloop1
LDR R0,SCREEN
LDR R1,SCREEN+4
ADD r0,r1,r0
ADD R0,R0,#160
ADR R1,SPRITES
LDR R3,wert_zweite
MOV R3,R3,lSR#2
ADD R1,R1,R3,lsl#14
MOV R2,#128
.plotloop2
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12}
STMIA R0!,{R3-R12}
ADD R0,R0,#192
SUBS R2,R2,#1
BGT plotloop2
LDR R0,SCREEN
LDR R1,SCREEN+4
ADD r0,r1,r0
ADD R0,R0,#(320*128)
ADD R0,R0,#32
ADR R1,SPRITES
LDR R3,wert_dritte
MOV R3,R3,lSR#2
ADD R1,R1,R3,lsl#14
MOV R2,#128
.plotloop3
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12}
STMIA R0!,{R3-R12}
ADD R0,R0,#192
SUBS R2,R2,#1
BGT plotloop3
.vierte
LDR R0,SCREEN
LDR R1,SCREEN+4
ADD r0,r1,r0
ADD R0,R0,#(320*128)
ADD R0,R0,#160
ADR R1,SPRITES
LDR R3,wert_vierte
MOV R3,R3,lSR#2
ADD R1,R1,R3,lsl#14
MOV R2,#128
.plotloop4
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12,R14}
STMIA R0!,{R3-R12,R14}
LDMIA R1!,{R3-R12}
STMIA R0!,{R3-R12}
ADD R0,R0,#192
SUBS R2,R2,#1
BGT plotloop4
MOV R0,#0
CMP R0,#(PlotChoice)
BNE tastendruck
LDR R0,SCREEN
LDR R1,SCREEN+4
ADD r0,r1,r0
MOV R4,#0
LDR R1,BASIS
LDR R2,SBLOCK
MOV R5,#(BufferColor)
ADR R12,table%
MOV R10,#0
CMP R10,#(ViewChoice)
BNE plot_buffer_sideways
.plot_buffer_above
LDR R10,[R1]
R3,R10,#&FF
LDRB R3,[R12,R3]
MOV R3,R3,LSR#2
MOV R6,R3,LSL#8
ADD R6,R6,R3,LSL#6
ADD R6,R6,#(32*320)
ADD R6,R6,#32
STRB R5,[R0,R6]
R3,R10,#&FF00
LDRB R3,[R12,R3,LSR#8]
MOV R3,R3,LSR#2
MOV R6,R3,LSL#8
ADD R6,R6,R3,LSL#6
ADD R6,R6,#(32*320)
ADD R6,R6,#160
STRB R5,[R0,R6]
R3,R10,#&FF0000
LDRB R3,[R12,R3,LSR#16]
MOV R3,R3,LSR#2
MOV R6,R3,LSL#8
ADD R6,R6,R3,LSL#6
ADD R6,R6,#(160*320)
ADD R6,R6,#32
STRB R5,[R0,R6]
MOV R3,R10,lsr#24
LDRB R3,[R12,R3]
MOV R3,R3,LSR#2
MOV R6,R3,LSL#8
ADD R6,R6,R3,LSL#6
ADD R6,R6,#(160)*320
ADD R6,R6,#160
STRB R5,[R0,R6]
ADD R1,R1,R2
ADD R0,R0,#1
ADD R4,R4,#1
CMP R4,#128
BNE plot_buffer_above
B tastendruck
.plot_buffer_sideways
LDR R10,[R1]
R3,R10,#&FF
LDRB R3,[R12,R3]
MOV R3,R3,LSR#3
STRB R5,[R0,R3]
R3,R10,#&FF00
LDRB R3,[R12,R3,LSR#8]
MOV R3,R3,LSR#3
ADD R3,R3,#288
STRB R5,[R0,R3]
R3,R10,#&FF0000
LDRB R3,[R12,R3,LSR#16]
MOV R3,R3,LSR#3
ADD R3,R3,#(320*128)
STRB R5,[R0,R3]
MOV R3,R10,lsr#24
LDRB R3,[R12,R3]
MOV R3,R3,LSR#3
ADD R3,R3,#(320*128)
ADD R3,R3,#288
STRB R5,[R0,R3]
ADD R1,R1,R2
ADD R0,R0,#320
ADD R4,R4,#1
CMP R4,#128
BNE plot_buffer_sideways
.tastendruck
MOV R0,#121:MOV R1,#112+128
SWI 6:CMP R1,#&FF:BEQ RAUS
B main_loop
.RAUS
LDMFD R13!,{R0-R12,PC}
(;-----------------------------------
.wert_erste
EQUD 0
.wert_zweite
EQUD 0
.wert_dritte
EQUD 0
.wert_vierte
EQUD 0
(;-----------------------------------
.LOESCHBILD
5MOV R0,#0:MOV R1,R0:MOV R2,R0:MOV R3,R0:MOV R4,R0
!MOV R5,R0:MOV R6,R0:MOV R7,R0
LDR R10,SCREEN
LDR R11,SCREEN+4
ADD r10,r10,r11
MOV R11,#255
.LOESCHBILD_LOOP
STMIA R10!,{R0-R7}
ADD R10,R10,#256
STMIA R10!,{R0-R7}
SUBS R11,R11,#1
BPL LOESCHBILD_LOOP
MOV PC,R14
(;-----------------------------------
.GSCREEN
ADR R0,GSCRTAB
ADR R1,SCREEN
SWI "OS_ReadVduVariables"
LDR R0,SCREEN
MOV PC,R14
.GSCRTAB
EQUD 148
EQUD -1
.SCREEN
EQUD 0
EQUD 0
(;-----------------------------------
.SSCAN
STMFD R13!,{R0-R12,R14}
MOV R0,#0
MOV R1,#0
MOV R2,#0
MOV R3,#0
MOV R4,#0
SWI "Sound_Configure"
ADR R5,SBLOCK
STMIA R5,{R0-R4}
ADR R3,TESTSOUND
SWI "Sound_Configure"
MOV R0,#0
STR R0,TESTVOICE
.ESLOOP
-C MOV R0,#121:MOV R1,#112+128:SWI 6:CMP R1,#&FF:BEQ GEHTNICHT
LDR R9,TESTVOICE
CMP R9,#0
BEQ ESLOOP
.GEHTNICHT
ADR R5,SBLOCK
LDMIA R5,{R0-R4}
SWI "Sound_Configure"
LDMFD R13!,{R0-R12,PC}
6, ;-----------------------------------
.SBLOCK
EQUD 0
EQUD 0
EQUD 0
EQUD 0
EQUD 0
=$ .TESTSOUND:EQUD TESTSOUNDPRG
EQUD 0
EQUD 0
EQUD 0
.TESTSOUNDPRG
STR R7,TESTVOICE
STR R12,BASIS
MOVS PC,R14
.TESTVOICE
EQUD 0
.BASIS
EQUD 0
I(;-----------------------------------
.SPRITES
_work(524288):ALIGN
_work(amount)
P%+=amount
O%+=amount